#ifndef BATTLEWINDOW_H
#define BATTLEWINDOW_H

#include <Tool/myTime.h>

#include <QDebug>
#include <QLabel>
#include <QMainWindow>
#include <QMovie>
#include <QParallelAnimationGroup>
#include <QPropertyAnimation>
#include <QRandomGenerator>
#include <QTimer>
// #include<QGraphicsOpacityEffect>

#include "Role/wholeprogress.h"
#include "Tool/musicplayer.h"
#include "choosewindow.h"
#include "endwindow.h"
#include "vector"
namespace Ui {
class battleWindow;
}

class battleWindow : public QMainWindow {
  Q_OBJECT

 public:
  explicit battleWindow(int, int, QWidget *parent = nullptr);
  ~battleWindow();
  vector<card> cardList;  //
  WholeProgress *game;
  QPropertyAnimation *enemyAnimation, *playerAnimation;
  QPropertyAnimation *numberMove[5], *numberOpacity[5];
  QParallelAnimationGroup *animationGroup[5];
  QGraphicsOpacityEffect *opacityEffect[5];
  int n = 0;
  struct mydata card0;
  // MusicPlayer musicPlayer;
  vector<card> chooseCard;
  int type, labelcnt = 0;
  myTime *count;

  // 事件编号
  int event_num;
  // pa
  QWidget *enemyActionForecastWidget;
  QLabel *enemyActionLabel;
  void usecard(int n);
  void win();
  QTimer timer;
  void random_route();
  void fight_button(int n);
  void rest_button(int n);
  void store_button(int n);
  void event_button(int n);
 public slots:
  void showNumber(QString a, int x, int y, int t, QColor c);
  void getCards();

 private slots:
  //

  void on_pushButton_clicked();

  void on_pushButton_2_clicked();

  void on_pushButton_3_clicked();

  void on_pushButton_4_clicked();

  void startbattle();
  void on_pushButton_5_clicked();

  void on_pushButton_6_clicked();

  void on_pushButton_7_clicked();

  void on_pushButton_8_clicked();

  void on_pushButton_9_clicked();

  void hideButton();

  void showCard();

  void disableButton();

  void enableButton();

  void showHpMp();

  // pa
  void showEnemyAction();

  void on_card1_clicked();

  void on_card2_clicked();

  void on_card3_clicked();

  void whoDeath();

  void action(int);

  void on_pushButton_10_clicked();

  void show_enemy_buff();

  void hide_buff();

  void show_player_buff();

  void showUgly(int);

  void on_comeback_clicked();

  void on_remake_clicked();

  void on_fight1_clicked();

  void on_fight2_clicked();

  void on_fight3_clicked();

  void on_rest1_clicked();

  void on_rest2_clicked();

  void on_rest3_clicked();

  void on_store1_clicked();

  void on_store2_clicked();

  void on_store3_clicked();

  void on_event1_clicked();

  void on_event2_clicked();

  void on_event3_clicked();

  void on_option_1_clicked();

  void on_option_2_clicked();

 private:
  // int switInEnd;
  bool enter_store;       // 是否进入过商店
  bool enter_rest;        // 是否休息过
  QLabel *hurtNumber[5];  // 增加打击时伤害数字显示
  QLabel *rest_back;      // 休息时的背景
  QLabel *rest_text;      // 休息时的文字
  QLabel *rest_gif;       // 休息时的动图
  QMovie *gif;            // 休息时的动图源
  QTimer *rest_timer;     // 休息时的计数器
  int level;              // 难度
  int enemy_damage;       // 敌人攻击力
  Ui::battleWindow *ui;
  void random_gif();  // 随机生成休息时的动图
  int random_event();
  vector<QLabel *> enemy_buff;  // 敌人buff的图标
};

#endif  // BATTLEWINDOW_H
